سلام
در پنلمون به یوزر لاگین هم نقش دادم هم permission
به همون role هم permission دادم از directive can در navbar استفاده کردم و permission مربوطه رو به can دادم
ولی اپشنی ک من تعین کردم برای کاربر نمایش داده نشد
ی دیرکتیو برای role set کردم و به اون دیرکتیو نقش دادم ولی بازم permission اون نقش برای کاربر در navbar نمایش داده نشد
میدلور ساختم و registerش کردم وقتی اعمالش کردم روی روت هام الان به کل دسترسی به روتهای مربوط رو از کاربرم گرفته درصورتیکه کاربرم اون رول رو داره
کدهای دیرکتیوم
Blade::if('role', function ($role) {
return auth()->check() && auth()->user()->hasRole($role);
});
@role('show panel')
"{{ route('users.index') }}" class="dropdown-item">@lang('users.panel')
@endrole
برای gate هم
@can('show panel')
"{{ route('users.index') }}" class="dropdown-item">@lang('users.panel')
@endcan
middleware م
public function handle(Request $request, Closure $next, $role)
{
if (!$request->user() || !$request->user()->hasRole(($role))) {
abort(404);
}
return $next($request);
}
'role' => \\App\\Http\\Middleware\\RolMiddleware::class,
Route::middleware('role:admin')->group(function () { Route::prefix('panel')->group(function () { Route::get('users', [UserController::class, 'index'])->name('users.index'); Route::get('users/{user}/edit', [UserController::class, 'edit'])->name('users.edit'); Route::put('users/{user}', [UserController::class, 'update'])->name('users.update'); Route::get('roles', [RoleController::class, 'index'])->name('roles.index'); Route::post('', [RoleController::class, 'store'])->name('roles.store'); Route::get('roles/{role}/edit', [RoleController::class, 'edit'])->name('roles.edit'); Route::put('roles/{role}', [RoleController::class, 'update'])->name('roles.update'); }); });